Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

105
Views
Si declaración con múltiples || condiciones

Estoy recorriendo una serie de objetos y tratando de ver si hay una mejor manera de escribir esto (siento que la hay).

Esta es mi función a continuación.

 getCallInfo = (callSch: any, security: any) => { const callObj = { CallTimingType: 'Not Callable', isCheckMark: null, }; if (!security.IsCallable) return callObj; callSch.Calls.forEach((el: { CallTimingType: string }) => { if (el.CallTimingType === CallTimingType.SpecificDates) { callObj.CallTimingType = 'Discrete'; callObj.isCheckMark = true; } if ( el.CallTimingType === CallTimingType.AnyTime || el.CallTimingType === CallTimingType.Monthly || el.CallTimingType === CallTimingType.OnPaymentDates || el.CallTimingType === CallTimingType.AnyInterestAdjustmentDate ) { callObj.CallTimingType = 'Continuous'; callObj.isCheckMark = true; } }); return callObj; };

básicamente, lo que está haciendo es devolver el objeto predeterminado si security.IsCallable es falso pero si es verdadero, recorrer la matriz de objetos y establecer el objeto predeterminado en diferentes valores. Lo que básicamente estoy haciendo es tratar de refactorizar esto. CallTimingType es un objeto con estos valores de enumeración. ¿Alguna idea?

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Podría usar Array.prototype.some() para iterar y probar si el.CallTimingType coincide con algún valor.

 if ( el.CallTimingType === CallTimingType.AnyTime || el.CallTimingType === CallTimingType.Monthly || el.CallTimingType === CallTimingType.OnPaymentDates || el.CallTimingType === CallTimingType.AnyInterestAdjustmentDate )

Se puede reescribir como:

 const callTimingTypes = [ CallTimingType.AnyTime, CallTimingType.Monthly, CallTimingType.OnPaymentDates, CallTimingType.AnyInterestAdjustmentDate ]; if (callTimingTypes.some((t) => el.CallTimingType === t))
about 4 years ago · Santiago Trujillo Report

0

Puede reescribir su cláusula con el operador de switch case para que quede claro:

 callSch.Calls.forEach((el: { CallTimingType: string }) => { switch (el.CallTimingType) { case CallTimingType.SpecificDates: callObj.CallTimingType = 'Discrete'; callObj.isCheckMark = true; break; case CallTimingType.AnyTime: case CallTimingType.Monthly: case CallTimingType.OnPaymentDates: case CallTimingType.AnyInterestAdjustmentD: callObj.CallTimingType = 'Continuous'; callObj.isCheckMark = true; break; } });

Alternativamente, puede usar Set :

 callSch.Calls.forEach((el: { CallTimingType: string }) => { const discreteSet = new Set([CallTimingType.SpecificDates]); const continuousSet = new Set([ CallTimingType.AnyTime, CallTimingType.Monthly, CallTimingType.OnPaymentDates, CallTimingType.AnyInterestAdjustmentD, ]); if (discreteSet.has(el.CallTimingType)) { callObj.CallTimingType = 'Discrete'; callObj.isCheckMark = true; } else if (continuousSet.has(el.CallTimingType)) { callObj.CallTimingType = 'Continuous'; callObj.isCheckMark = true; } });
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!